package feifei;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

@WebServlet("/login.action")
public class LoginServlet extends HttpServlet {

/*
            获取上一次登录的时间展示页面上(7天存活时间)
            登录页面 ---->LoginServlet ---->把当前时间打印在页面
            首次登录，页面上：欢迎XXX,首次登录，当前时间为：2023/8/14 10:55:30
            不是首次登录，登录成功后在页面上显示上一次的登录时间值
            欢迎XXX,您的上一次登录时间为2023/8/14 10:55:30，距今已过去了n天  换成毫秒值  /1000/60/60/24 尾数小于1算1
         */

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=UTF-8");
        req.setCharacterEncoding("UTF-8");
        String username=req.getParameter("username");
        String password=req.getParameter("password");
        if("feifei".equals(username)&&"123456".equals(password)){
            //登陆成功

        }
        //获取当前时间
        Date currentTime = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd_HH:mm:ss");
        String times = sdf.format(currentTime);//保存当前时间

        // 检查是否为首次登录
        HttpSession session = req.getSession();
        String lastLoginTime = (String) session.getAttribute("lastLoginTime");
        boolean isFirstLogin = (lastLoginTime == null);//检测是否有上次登陆时间

        // 保存当前时间为上一次登录时间
        session.setAttribute("lastLoginTime", times);

        // 设置Cookie，保存上一次登录时间
        Cookie cookie = new Cookie("lastLoginTime", times);
        //设置Cookie存活时间
        cookie.setMaxAge(60 * 60 * 24 * 7);//7天
        resp.addCookie(cookie);

// 构建欢迎消息
        String welcomeMessage;
        if (isFirstLogin) {
            welcomeMessage = "欢迎张三，首次登录，当前时间为：" + times;
        } else {
            // 计算距今已过去的天数
            long milliseconds = 0;
            try {
                milliseconds = currentTime.getTime() - sdf.parse(lastLoginTime).getTime();//现在是毫秒值
            } catch (ParseException e) {
                throw new RuntimeException(e);
            }
            int days = (int) Math.ceil(milliseconds / (1000.0 * 60 * 60 * 24));//转换成天数

            welcomeMessage = "欢迎张三，您的上一次登录时间为" + lastLoginTime + "，距今已过去了" + days + "天";
        }

// 在页面上显示欢迎消息
        resp.getWriter().println(welcomeMessage);

    }
}

